home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / QuickDraw 3D / RAVE SDK 1.5 MacOS / RaveDemo / shieldRect goo < prev    next >
Encoding:
Text File  |  1997-08-14  |  1.9 KB  |  52 lines  |  [TEXT/MPS ]

  1. struct ShieldRectParamBlock
  2.     {
  3.     ProcPtr                procPtr;        /* pointer to routine to call if shield touches */
  4.     long                refCon;            /* constant to pass to UPP routine */
  5.     Rect                newRect;        /* New rect */
  6.     Rect *                 shieldRect;        /* pointer to private shield rect, returned by register */
  7.     void                *shieldStructPtr; /* pointer to shield parameter block, returned by register */
  8.     };
  9. typedef struct ShieldRectParamBlock ShieldRectParamBlock, *ShieldRectParamBlockPtr;
  10.  
  11. enum
  12.     {
  13.     kGetBlitProcVers,
  14.     kGetBlitProcPtr,
  15.     kSetBlitProcPtr,
  16.     kRegisterShieldRectangle,
  17.     kUnRegisterShieldRectangle,
  18.     kSetShieldRectangle
  19.     };
  20.  
  21. EXTERN_API( SInt32 )
  22. NQDMisc                            (SInt32                 selector,
  23.                                  SInt32 *                paramBlock)                            ONEWORDINLINE(0xABC3);
  24.  
  25. typedef CALLBACK_API( void , QDUserNotifyProcPtr )(SInt16 left, SInt16 top, SInt16 right, SInt16 bottom, SInt32 refCon);
  26. typedef STACK_UPP_TYPE(QDUserNotifyProcPtr)                     QDUserNotifyUPP;
  27. enum { uppQDUserNotifyProcInfo = 0x0000EA80 };                     /* pascal no_return_value Func(2_bytes, 2_bytes, 2_bytes, 2_bytes, 4_bytes) */
  28. #define NewQDUserNotifyProc(userRoutine)                         (QDUserNotifyUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDUserNotifyProcInfo, GetCurrentArchitecture())
  29. #define CallQDUserNotifyProc(userRoutine, left, top, right, bottom, refCon)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppQDUserNotifyProcInfo, (left), (top), (right), (bottom), (refCon))
  30.  
  31. if (cnp->nqdShieldRectPtr) {
  32.     pb.newRect = cnp->globalRect;
  33.     pb.shieldStructPtr = cnp->nqdShieldRectPtr;
  34.     NQDMisc(kSetShieldRectangle, (long*)&pb);
  35. }
  36. else {
  37.     pb.procPtr = (void *)GetRoutineAddress(nqdCursorShielded);
  38.     pb.refCon = (long)cnp;
  39.     pb.newRect = cnp->globalRect;
  40.     pb.shieldStructPtr = nil;
  41.     NQDMisc(kRegisterShieldRectangle, (long*)&pb);
  42.     cnp->nqdShieldRectPtr = pb.shieldStructPtr;
  43. }
  44.  
  45. if (cnp->nqdShieldRectPtr) {
  46.     ShieldRectParamBlock pb;
  47.  
  48.     pb.shieldStructPtr = cnp->nqdShieldRectPtr;
  49.     NQDMisc(kUnRegisterShieldRectangle, (long*)&pb);
  50.     cnp->nqdShieldRectPtr = nil;
  51. }
  52.